<?php
require_once 'AuthController.php';
class Account extends CI_Controller {
	
	private $auth;
	
	function Account() {
		parent::__construct ();
		$this->load->model ( 'be/account_model', 'model' );
		$this->load->library ( 'form_validation' );
		$this->load->helper ( array ('form', 'url' ) );
		$this->auth = new AuthController();
	}
	
	function index() {
		$this->list_all();
	}

	function add() {
		if($this->auth->can('add', 'account')) {
			$this->form_validation->set_rules ( 'fullname', 'Họ tên','required');
			$this->form_validation->set_rules ( 'username', 'Tên tài khoản', 'required|min_lenght[5]|max_lenght[20]');
			$this->form_validation->set_rules ( 'password', 'Mật khẩu', 'required' );
			$this->form_validation->set_rules ( 'email', 'Email', 'valid_email' );
			if ($this->form_validation->run () == FALSE) {
				$data['page_title'] = 'Tạo người dùng mới';
				$data['main_content'] = 'be/sys_account/add';
				$this->load->view('be/includes/template', $data);
			}else {
				$data['name'] = $this->input->post('fullname');
				$data['username'] = $this->input->post('username');
				$data['password'] = $this->input->post('password');
				$data['email'] = $this->input->post('email');
				$data['status'] = $this->input->post('status');
				
				if (! $this->model->add ( $data )) {
					$data ['page_title'] = 'Có lỗi xảy ra';
					$mess_detail = '<p>Hãy kiểm tra lại thông tin bạn đã điền vào form!</p>';
					$mess_detail .= '<p><a href="' . base_url () . 'index.php/account/add"> Làm lại</a> hoặc <a href="' . base_url () . 'index.php/account">Trở lại trang danh sách</a></p>';
					$data ['message_detail'] = $mess_detail;
				} else {
					$data ['page_title'] = 'Thành công';
					$mess_detail = '<p>Thêm mới thành công!</p>';
					$mess_detail .= '<p><a href="' . base_url () . 'index.php/account/add">Tiếp tục</a> hoặc <a href="' . base_url () . 'index.php/account">Trở lại trang danh sách</a>';
					$data ['message_detail'] = $mess_detail;
				}
				$data ['main_content'] = 'be/message';
				$this->load->view ( 'be/includes/template', $data );
			}
		}else {
			$this->auth->denied();
		}
	}
	
	function list_all() {
		if($this->auth->can('view', 'account')) {
			$data['accounts'] =  $this->model->get();
			$data ['page_title'] = 'Danh sách khách hàng';
			$data ['main_content'] = 'be/sys_account/list';
			$this->load->view ( 'be/includes/template', $data );
		}else {
			return $this->auth->denied();
		}
	}
	
	function update($username) {		
		if($this->auth->can('update', 'account')) {
			$account = $this->model->get($username);
			
			$data ['name'] = $account->name;
			$data ['username'] = $username;
			$data ['password'] = $account->password;
			$data ['email'] = $account->email;
			$data ['status'] = $account->status;
			$this->form_validation->set_rules ( 'fullname', 'Họ tên');
			$this->form_validation->set_rules ( 'password', 'Mật khẩu', 'required'  );
			$this->form_validation->set_rules ( 'email', 'Email', 'required'  );
			$this->form_validation->set_rules ( 'status', 'Trạng thái' );	
			
			if ($this->form_validation->run () == FALSE) {
				$data ['page_title'] = 'Cập nhật thông tin khách hàng';
				$data ['main_content'] = 'be/sys_account/update';
				$this->load->view ( 'be/includes/template', $data );
			} else {
				$data ['name'] = $this->input->post ( 'fullname' );
				$data ['username'] = $username;
				$data ['password'] = $this->input->post ( 'password' );
				$data ['email'] = $this->input->post ( 'email' );
				$data ['status'] = $this->input->post ( 'status' );
				
				if (! $this->model->update ($username, $data )) {
					$data ['page_title'] = 'Có lỗi xảy ra';
					$mess_detail = '<p>Hãy kiểm tra lại thông tin bạn đã điền vào form!</p>';
					$mess_detail .= '<p><a href="' . base_url () . 'index.php/account/update"> Làm lại</a> hoặc <a href="' . base_url () . 'index.php/account">Trở lại trang danh sách</a></p>';
					$data ['message_detail'] = $mess_detail;
				} else {
					$data ['page_title'] = 'Thành công';
					$mess_detail = '<p>Cập nhật thành công!</p>';
					$mess_detail .= '<p><a href="' . base_url () . 'index.php/account/update">Tiếp tục</a> hoặc <a href="' . base_url () . 'index.php/account">Trở lại trang danh sách</a>';
					$data ['message_detail'] = $mess_detail;
				}
				$data ['main_content'] = 'be/message';
				$this->load->view ( 'be/includes/template', $data );
			}
		}else {
			$this->auth->denied();
		}
	}
	
	function delete() {
		if($this->auth->can('delete', ''))
		if($this->auth->can(''))
		$usernames = $this->input->post('selected');
		foreach ($usernames as $username){
			$this->model->delete($username);
		}
		redirect(site_url('account'));
	}
	
	function permission() {
		$data['accounts'] = $this->model->get(); 
		$data['page_title'] = 'Trang quản trị phân quyền';
		$data['main_content'] = 'be/sys_account/permission';
		$this->load->view('be/includes/template', $data);
	}
	
	function updatePermission() {
		$username = $this->input->post('username');
		$module = $this->input->post('module');
		$level = $this->input->post('level');
		//echo $username . ' - ' . $module . ' - ' . $level;
		$flag = false;
		if($module == 'all') {
			 
			$flag = $this->auth->setPermissionAll($username, $level);
		}else {
			$flag = $this->auth->setPermission($username, $module, $level);
		}
		if ( ! $flag ) {
			$data ['page_title'] = 'Có lỗi xảy ra';
			$mess_detail = '<p><a href="' . base_url () . 'index.php/account/permission"> Làm lại</a> hoặc <a href="' . base_url () . 'index.php/account/permission">Trở lại trang phân quyền</a></p>';
			$data ['message_detail'] = $mess_detail;
		} else {
			$data ['page_title'] = 'Thành công';
			$mess_detail = '<p>Cập nhật thành công!</p>';
			$mess_detail .= '<p><a href="' . base_url () . 'index.php/account/permission">Tiếp tục</a> hoặc <a href="' . base_url () . 'index.php/account/permission">Trở lại trang phân quyền</a>';
			$data ['message_detail'] = $mess_detail;
		}
		$data ['main_content'] = 'be/message';
		$this->load->view ( 'be/includes/template', $data );
	}
	
	
	function login() {
		$this->form_validation->set_rules('username','Tên đăng nhập','trim|required');
		$this->form_validation->set_rules('password','Mật khẩu','trim|required');
		
		if ($this->form_validation->run () == FALSE){
			$data ['page_title'] = 'Đăng nhập';
			$data ['main_content'] = 'be/sys_account/login';
			$this->load->view ( 'be/includes/template', $data );
		}
		else{
			$account['username'] = $this->input->post('username');
			$account['password'] = $this->input->post('password');
			$query = $this->model->is_exist($account);
			if($query){		
				$this->session->set_userdata('username', $account['username']);
				$data['page_title'] = 'Overview';
				$data['main_content'] = 'be/overview';					
				$this->load->view ( 'be/includes/template', $data );
			}
			else{
				//$this->login();
				$data ['page_title'] = 'Sorry';
				$data['message_detail'] = '<p>Tên đăng nhập hoặc mật khẩu không đúng!</p>';
				$data['message_detail'] .= '<p><a href="' . base_url () . 'index.php/account/login" >Đăng nhập</p>';
				$data ['main_content'] = 'be/message';
				$this->load->view ( 'be/includes/template', $data );
			}
		}
	}
	
	function logout(){
		$this->session->sess_destroy();
		redirect(base_url().'index.php/account/login');
	}
}